﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Collections;

namespace Librerias
{
    /// <summary>
    /// clase EN Asignatura
    /// </summary>
    public class ENAsignatura : ENBase
    {
        #region variables
        /// <summary>
        /// Identificador único del usuario2
        /// </summary>
        private string codigo;
        /// <summary>
        /// Nombre de la asignatura
        /// </summary>
        private string nombre;
        /// <summary>
        /// Créditos de la asignatura
        /// </summary>
        private float creditos;
        /// <summary>
        /// Referencia de la asignatura
        /// </summary>
        private string referencia;
        /// <summary>
        /// Cuatrimestre de la asignatura 1 o 2
        /// </summary>
        private int cuatrimestre;

        private CADAsignatura cad = new CADAsignatura();

        #endregion

        #region get set
        public string Codigo
        {
            get { return codigo; }
            set { codigo = value; }
        }
        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }
        public float Creditos
        {
            get { return creditos; }
            set { creditos = value; }
        }
        public string Referencia
        {
            get { return referencia; }
            set { referencia = value; }
        }
        public int Cuatrimestre
        {
            get { return cuatrimestre; }
            set { cuatrimestre = value; }
        }
        #endregion

        #region Constructores
        /// <summary>
        /// Constructor vacío
        /// </summary>
        public ENAsignatura()
        {
            codigo = string.Empty;
            nombre = string.Empty;
            creditos = 0;
            referencia = string.Empty;
            cuatrimestre = 0;

        }
       
        /// <summary>
        /// Const Parametrizado
        /// </summary>
        /// <param name="uncodigo">código</param>
        /// <param name="unnombre">nombre</param>
        /// <param name="uncreditos">creditos</param>
        /// <param name="unreferencia">referencia</param>
        /// <param name="uncuatrimestre">cuatrimestre</param>
        public ENAsignatura(string uncodigo, string unnombre, float uncreditos, string unreferencia, int uncuatrimestre)
        {
            codigo = uncodigo;
            nombre = unnombre;
            creditos = uncreditos;
            referencia = unreferencia;
            cuatrimestre = uncuatrimestre;
        }
        #endregion

        /// <summary>
        /// Dice asignaturas por alumno
        /// </summary>
        /// <param name="correo">correo alumno</param>
        /// <returns>DataTable</returns>
        public DataTable ConsultaAsignaturasAlumno(string correo)
        {
            return cad.ConsultaAsignaturasAlumno(correo);
        }

        /// <summary>
        /// Dice asignaturas por profesor
        /// </summary>
        /// <param name="correo">correo</param>
        /// <returns>ArrayList</returns>
        public ArrayList ConsultaAsignaturasProfesor(string correo)
        {
            return cad.ConsultaAsignaturasProfesor(correo);
        }

        /// <summary>
        /// Nos devuelve asignaturas
        /// </summary>
        /// <returns>DataTable</returns>
        public DataTable GetAsignaturas()
        {
           return cad.GetAsignaturas();
        }
       
        /// <summary>
        /// Devuelve asignatura en ArrayList
        /// </summary>
        /// <returns>ArrayList</returns>
        public ArrayList ConsultaAsignaturas()
        {
            return cad.ConsultaAsignaturas();
        }

        /// <summary>
        /// Nos dice código segun nombre de asignaturas
        /// </summary>
        /// <param name="nombreBuscado">nombre</param>
        /// <returns>DataTable</returns>
        public DataTable DimeCodigoSegunNombre(string nombreBuscado)
        {
            return cad.DimeCodigoSegunNombre(nombreBuscado);
        }

        

        /// <summary>
        /// Consulta Asignaturas Por CorreoUsu Y TipoDataTable
        /// </summary>
        /// <param name="correo">correo</param>
        /// <param name="tipoUsu">tipo</param>
        /// <returns>DataTable</returns>
        public DataTable ConsultaAsignaturasPorCorreoUsuYTipoDataTable(string correo, int tipoUsu)
        {
            return cad.ConsultaAsignaturasPorCorreoUsuYTipoDataTable(correo, tipoUsu);
        }

        /// <summary>
        /// Consulta por Cuatrimestre
        /// </summary>
        /// <returns>ArrayList</returns>
        public ArrayList ConsultaCuatrimestre()
        { 
            return cad.ConsultaCuatrimestre();
        }

        /// <summary>
        /// Busca un código Asignatura
        /// </summary>
        /// <param name="codigo">asignatura</param>
        /// <returns>Si E o si no</returns>
        public bool BuscarCodigo(string codigo)
        { 
            return cad.BuscarCodigo(codigo);

        }

        /// <summary>
        /// Persiste una Asignatura
        /// </summary>
        public void CrearAsignatura()
        {
            CADAsignatura cad = new CADAsignatura();
            cad.CrearAsignatura(this);
        }

        /// <summary>
        /// Modifica una asignatura 
        /// </summary>
        public void ModificarAsignatura()
        {
            cad.ModificarAsignatura(this);
        }

        /// <summary>
        /// Borra una asignatura
        /// </summary>
        /// <param name="asig">asignatura</param>
        public void BorrarAsignatura(ENAsignatura asig)
        {
            cad.BorrarAsignatura(asig);
        }

        /// <summary>
        /// Consulta çasignaturas
        /// </summary>
        /// <param name="cadena">cadena</param>
        /// <param name="tipo">tipo</param>
        /// <returns></returns>
        public DataTable ConsultaAsignaturas(string cadena, int tipo)
        {
            return cad.ConsultaAsignaturas(cadena,tipo);
        }


        public String dameNombreAsig(String codAsig)
        {
            return cad.dameNombreAsig(codAsig);
        }


        
        public DataTable GetCodigosFromAlumno(string correo)
        {
            return cad.GetCodigosFromAlumno(correo);
        }

        public DataTable GetCodigosFromProfesor(string correo)
        {
            return cad.GetCodigosFromProfesor(correo);
        }
    }

   
}
